import java.util.Arrays;
import java.util.Comparator;
import java.util.PriorityQueue;
public class Test {
    /**
     * array为500家公司
     * k为后100弱的
     */
    public static int[] top10(int[] array, int k){
        int[] ret = new int[k];
        if(k == 0){
            return ret;
        }
        PriorityQueue<Integer> priorityQueue = new PriorityQueue<Integer>(new Comparator<Integer>() {
            @Override
            public int compare (Integer o1, Integer o2){
                return o2 - o1;
            }
        });
        for(int i = 0; i < array.length; i++){
            if(priorityQueue.size() < k){
                priorityQueue.offer(array[i]);
            }else{
                if(priorityQueue.peek() > array[i]){
                    priorityQueue.poll();
                    priorityQueue.offer(array[i]);
                }
            }
        }
        for(int i = 0; i < k ; i++){
            ret[i] = priorityQueue.poll();
        }
        return ret;
    }
    public static void main(String[] args){
        /**
         * 测试用例
         * 假设有10家公司，求后三家公司
         */
        int[] array = {3,1,2,9,6,7,8,4,5,10};
        int[] store = top10(array, 3);
        System.out.println(Arrays.toString(store));
    }
}
